Semiconductor memory is widely used in various electronic devices such as cellular telephones, digital cameras, personal digital assistants, medical electronics, mobile computing devices, non-mobile computing devices and data servers. Semiconductor memory may comprise non-volatile memory or volatile memory. A non-volatile memory allows information to be stored and retained even when the non-volatile memory is not connected to a source of power (e.g., a battery). Examples of non-volatile memory include flash memory (e.g., NAND-type and NOR-type flash memory), Electrically Erasable Programmable Read-Only Memory (EEPROM), and others.
When a memory system is deployed in or connected to an electronic device (the host), the memory system can be used to store data and read data. It is important that writing and reading is performed accurately, so that data is not lost. Over time the integrity of the stored data may suffer due to effects such as read disturb. Read disturb is a phenomenon in which reading memory cells disturbs the data stored in either the read data cells or other data cells not presently being read. Effects such as read disturb can cause what is referred to as a failed bit. A failed bit means that a value of a bit that is read is flipped from the value that was stored. The memory system is able to correct for some of the failed bits by use of an error correction algorithm, which is used to decode the data.
Read scrub is a technique that re-writes data from time to time, with a goal of re-writing the data prior to the data integrity becoming so poor that the data cannot be successfully decoded. One read scrub technique is to read the data, use an error correction algorithm to correct any failed bits (or flipped bits) in the data, and then re-write the data. The data could be re-written to a different location than the location from which it was read.